package action;

import common.DelegaServicos;
import common.Suporte;
import entity.Endereco;
import entity.Imovel;
import entity.TipoImovel;

@SuppressWarnings("serial")
public class AlterarImovel extends Suporte{

	private Imovel imovel;
	private String idImovel;
	private TipoImovel tipo;
	private boolean garagem;
	private String descricaoImovel;
	private String descricaoPagamento;
	private String nomeCidade;
	private String logradouro;
	private String cep;
	private String bairro;
	private String complemento;
	private int numero;

	public String execute() throws Exception {
		
		DelegaServicos delegador = new DelegaServicos();
		
		if(isPostMethod()) {
			
			Imovel imovel = delegador.getImovelController().retornaImovel(Integer.parseInt(this.idImovel));
			
			Endereco endereco = imovel.getEndereco();
			
			if(this.garagem != imovel.isGaragem()) {
				imovel.setGaragem(this.garagem);
			}
			if(!this.descricaoImovel.equalsIgnoreCase(imovel.getDescricaoImovel())) {
				imovel.setDescricaoImovel(this.descricaoImovel);
			}
			if(!this.descricaoPagamento.equalsIgnoreCase(imovel.getDescricaoPagamento())) {
				imovel.setDescricaoPagamento(this.descricaoPagamento);
			}
			if(!this.logradouro.equalsIgnoreCase(imovel.getEndereco().getLogradouro())) {
				endereco.setLogradouro(this.logradouro);
			}
			if(!this.cep.equalsIgnoreCase(imovel.getEndereco().getCep())) {
				endereco.setCep(this.cep);
			}
			if(!this.bairro.equalsIgnoreCase(imovel.getEndereco().getBairro())) {
				endereco.setBairro(this.bairro);
			}
			if(!this.complemento.equalsIgnoreCase(imovel.getEndereco().getComplemento())) {
				endereco.setComplemento(this.complemento);
			}
			if(this.numero != imovel.getEndereco().getNumero()) {
				endereco.setNumero(this.numero);
			}
			
			delegador.getEnderecoController().atualiza(endereco);
			
			delegador.getImovelController().atualiza(imovel);
			
			return SUCCESS;
			
		} else {
			
			Imovel imovel = delegador.getImovelController().retornaImovel(Integer.parseInt(this.idImovel));
			
			this.tipo = imovel.getTipo();
			this.garagem = imovel.isGaragem();
			this.descricaoImovel = imovel.getDescricaoImovel();
			this.descricaoPagamento = imovel.getDescricaoPagamento();
			this.nomeCidade = imovel.getEndereco().getCidade().getNome();
			this.logradouro = imovel.getEndereco().getLogradouro();
			this.cep = imovel.getEndereco().getCep();
			this.bairro = imovel.getEndereco().getBairro();
			this.complemento = imovel.getEndereco().getComplemento();
			this.numero = imovel.getEndereco().getNumero();
			
			return INPUT;
			
		}
		
	}

	public Imovel getImovel() {
		return imovel;
	}

	public void setImovel(Imovel imovel) {
		this.imovel = imovel;
	}
	
	public String getIdImovel() {
		return idImovel;
	}

	public void setIdImovel(String idImovel) {
		this.idImovel = idImovel;
	}
	
	public TipoImovel getTipo() {
		return tipo;
	}

	public void setTipo(TipoImovel tipo) {
		this.tipo = tipo;
	}

	public boolean isGaragem() {
		return garagem;
	}

	public void setGaragem(boolean garagem) {
		this.garagem = garagem;
	}

	public String getDescricaoImovel() {
		return descricaoImovel;
	}

	public void setDescricaoImovel(String descricaoImovel) {
		this.descricaoImovel = descricaoImovel;
	}

	public String getDescricaoPagamento() {
		return descricaoPagamento;
	}

	public void setDescricaoPagamento(String descricaoPagamento) {
		this.descricaoPagamento = descricaoPagamento;
	}

	public String getNomeCidade() {
		return nomeCidade;
	}

	public void setNomeCidade(String nomeCidade) {
		this.nomeCidade = nomeCidade;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
}
